home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / validation / DataValidator.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  8.0 KB  |  419 lines

  1. package com.extensibility.validation;
  2.  
  3. import com.extensibility.util.regexpr.Pattern;
  4. import com.extensibility.xml.SchemaIntf;
  5. import com.extensibility.xml.dt.DataType;
  6. import com.extensibility.xml.dt.Facet;
  7. import java.math.BigDecimal;
  8. import java.math.BigInteger;
  9. import java.util.Vector;
  10.  
  11. abstract class DataValidator {
  12.    protected static Pattern xmlNamePattern;
  13.    protected static Pattern xmlNmTokenPattern;
  14.  
  15.    protected String applyLexicalFacets(SchemaIntf var1, DataType var2, String var3) {
  16.       Facet var4 = var2.getFacet(Facet.FACET_PATTERN_NAME);
  17.       String var5 = var4 == null ? null : (String)var4.getValue();
  18.       if (var5 != null) {
  19.          try {
  20.             Pattern var9 = new Pattern(var5);
  21.             if (var9.matches(var3)) {
  22.                Object var11 = null;
  23.                return (String)var11;
  24.             } else {
  25.                String var10 = String.valueOf(String.valueOf(String.valueOf(String.valueOf("data \"").concat(String.valueOf(var3))).concat(String.valueOf("\" does no match regular expression \""))).concat(String.valueOf(var5))).concat(String.valueOf("\""));
  26.                return var10;
  27.             }
  28.          } catch (RuntimeException var8) {
  29.             String var7 = String.valueOf(String.valueOf(String.valueOf(String.valueOf("Invalid pattern \"").concat(String.valueOf(var5))).concat(String.valueOf("\" ("))).concat(String.valueOf(((Throwable)var8).getMessage()))).concat(String.valueOf(")"));
  30.             return var7;
  31.          }
  32.       } else {
  33.          DataType var6 = LeafValidator.getParentDataType(var1, var2);
  34.          return var6 != null ? this.applyLexicalFacets(var1, var6, var3) : null;
  35.       }
  36.    }
  37.  
  38.    protected String applyStringFacets(SchemaIntf var1, DataType var2, String var3) {
  39.       Facet var4 = var2.getFacet(Facet.FACET_LENGTH_NAME);
  40.  
  41.       try {
  42.          String var5 = var4 == null ? null : (String)var4.getValue();
  43.          if (var5 != null) {
  44.             int var24 = Integer.parseInt(var5);
  45.             if (var3.length() != var24) {
  46.                String var31 = String.valueOf(String.valueOf("length must be ").concat(String.valueOf(var24))).concat(String.valueOf(" characters"));
  47.                return var31;
  48.             }
  49.          }
  50.  
  51.          var4 = var2.getFacet(Facet.FACET_MINLENGTH_NAME);
  52.          var5 = var4 == null ? null : (String)var4.getValue();
  53.          if (var5 != null) {
  54.             int var25 = Integer.parseInt(var5);
  55.             if (var3.length() < var25) {
  56.                String var30 = String.valueOf(String.valueOf("length must be at least ").concat(String.valueOf(var25))).concat(String.valueOf(" characters"));
  57.                return var30;
  58.             }
  59.          }
  60.  
  61.          var4 = var2.getFacet(Facet.FACET_MAXLENGTH_NAME);
  62.          var5 = var4 == null ? null : (String)var4.getValue();
  63.          if (var5 != null) {
  64.             int var26 = Integer.parseInt(var5);
  65.             if (var3.length() > var26) {
  66.                String var29 = String.valueOf(String.valueOf("length must be at most ").concat(String.valueOf(var26))).concat(String.valueOf(" characters"));
  67.                return var29;
  68.             }
  69.          }
  70.  
  71.          var4 = var2.getFacet(Facet.FACET_ENUM_NAME);
  72.          Vector var27 = var4 == null ? null : (Vector)var4.getValue();
  73.          if (var27 != null && var27.indexOf(var3) == -1) {
  74.             String var28 = "data does not match enumeration facet";
  75.             return var28;
  76.          }
  77.  
  78.          var4 = var2.getFacet(Facet.FACET_MINEX_NAME);
  79.          boolean var7 = var4 != null && ((String)var4.getValue()).equals("true");
  80.          var4 = var2.getFacet(Facet.FACET_MIN_NAME);
  81.          var5 = var4 == null ? null : (String)var4.getValue();
  82.          if (var5 != null && var7) {
  83.             if (var3.compareTo(var5) <= 0) {
  84.                String var33 = String.valueOf(String.valueOf("data must be greater than \"").concat(String.valueOf(var5))).concat(String.valueOf("\""));
  85.                return var33;
  86.             }
  87.  
  88.             if (var3.compareTo(var5) < 0) {
  89.                String var32 = String.valueOf(String.valueOf("data must be greater than or equal to \"").concat(String.valueOf(var5))).concat(String.valueOf("\""));
  90.                return var32;
  91.             }
  92.          }
  93.  
  94.          var4 = var2.getFacet(Facet.FACET_MAXEX_NAME);
  95.          boolean var8 = var4 != null && ((String)var4.getValue()).equals("true");
  96.          var4 = var2.getFacet(Facet.FACET_MAX_NAME);
  97.          var5 = var4 == null ? null : (String)var4.getValue();
  98.          if (var5 != null && var8) {
  99.             if (var3.compareTo(var5) >= 0) {
  100.                String var34 = String.valueOf(String.valueOf("data must be less than \"").concat(String.valueOf(var5))).concat(String.valueOf("\""));
  101.                return var34;
  102.             }
  103.  
  104.             if (var3.compareTo(var5) > 0) {
  105.                String var9 = String.valueOf(String.valueOf("data must be less than or equal to \"").concat(String.valueOf(var5))).concat(String.valueOf("\""));
  106.                return var9;
  107.             }
  108.          }
  109.       } catch (Exception var10) {
  110.          if (var4 != null) {
  111.             String var23 = String.valueOf(String.valueOf(String.valueOf("invalid facet ").concat(String.valueOf(var4.getName()))).concat(String.valueOf(" = "))).concat(String.valueOf(var4.getValue()));
  112.             return var23;
  113.          }
  114.  
  115.          String var6 = "invalid facet";
  116.          return var6;
  117.       }
  118.  
  119.       DataType var22 = LeafValidator.getParentDataType(var1, var2);
  120.       return var22 != null ? this.applyStringFacets(var1, var22, var3) : null;
  121.    }
  122.  
  123.    protected String applyListFacets(SchemaIntf var1, DataType var2, Vector var3) {
  124.       Facet var4 = var2.getFacet(Facet.FACET_LENGTH_NAME);
  125.  
  126.       try {
  127.          String var5 = var4 == null ? null : (String)var4.getValue();
  128.          if (var5 != null) {
  129.             int var18 = Integer.parseInt(var5);
  130.             if (var3.size() != var18) {
  131.                String var24 = String.valueOf(String.valueOf("length must be ").concat(String.valueOf(var18))).concat(String.valueOf(" items"));
  132.                return var24;
  133.             }
  134.          }
  135.  
  136.          var4 = var2.getFacet(Facet.FACET_MINLENGTH_NAME);
  137.          var5 = var4 == null ? null : (String)var4.getValue();
  138.          if (var5 != null) {
  139.             int var19 = Integer.parseInt(var5);
  140.             if (var3.size() < var19) {
  141.                String var23 = String.valueOf(String.valueOf("length must be at least ").concat(String.valueOf(var19))).concat(String.valueOf(" items"));
  142.                return var23;
  143.             }
  144.          }
  145.  
  146.          var4 = var2.getFacet(Facet.FACET_MAXLENGTH_NAME);
  147.          var5 = var4 == null ? null : (String)var4.getValue();
  148.          if (var5 != null) {
  149.             int var20 = Integer.parseInt(var5);
  150.             if (var3.size() > var20) {
  151.                String var22 = String.valueOf(String.valueOf("length must be at most ").concat(String.valueOf(var20))).concat(String.valueOf(" items"));
  152.                return var22;
  153.             }
  154.          }
  155.  
  156.          var4 = var2.getFacet(Facet.FACET_ENUM_NAME);
  157.          Vector var21 = var4 == null ? null : (Vector)var4.getValue();
  158.          if (var21 != null) {
  159.             for(int var7 = 0; var7 < var3.size(); ++var7) {
  160.                String var8 = (String)var3.elementAt(var7);
  161.                if (var21.indexOf(var8) == -1) {
  162.                   String var9 = String.valueOf(String.valueOf("data \"").concat(String.valueOf(var8))).concat(String.valueOf("\" does not match enumeration facet"));
  163.                   return var9;
  164.                }
  165.             }
  166.          }
  167.       } catch (Exception var10) {
  168.          if (var4 != null) {
  169.             String var17 = String.valueOf(String.valueOf(String.valueOf("invalid facet ").concat(String.valueOf(var4.getName()))).concat(String.valueOf(" = "))).concat(String.valueOf(var4.getValue()));
  170.             return var17;
  171.          }
  172.  
  173.          String var6 = "invalid facet";
  174.          return var6;
  175.       }
  176.  
  177.       DataType var16 = LeafValidator.getParentDataType(var1, var2);
  178.       return var16 != null ? this.applyListFacets(var1, var16, var3) : null;
  179.    }
  180.  
  181.    protected String applyIntegralFacets(SchemaIntf var1, DataType var2, BigInteger var3) {
  182.       Object var4 = null;
  183.  
  184.       try {
  185.          Facet var12 = var2.getFacet(Facet.FACET_MINEX_NAME);
  186.          boolean var5 = var12 != null && ((String)var12.getValue()).equals("true");
  187.          var12 = var2.getFacet(Facet.FACET_MIN_NAME);
  188.          BigInteger var20 = var12 == null ? null : new BigInteger((String)var12.getValue());
  189.          if (var20 != null && var5) {
  190.             if (var3.compareTo(var20) <= 0) {
  191.                String var24 = String.valueOf(String.valueOf("data must be greater than ").concat(String.valueOf(var20))).concat(String.valueOf(""));
  192.                return var24;
  193.             }
  194.  
  195.             if (var3.compareTo(var20) < 0) {
  196.                String var23 = String.valueOf(String.valueOf("data must be greater than or equal to ").concat(String.valueOf(var20))).concat(String.valueOf(""));
  197.                return var23;
  198.             }
  199.          }
  200.  
  201.          var12 = var2.getFacet(Facet.FACET_MAXEX_NAME);
  202.          boolean var7 = var12 != null && ((String)var12.getValue()).equals("true");
  203.          var12 = var2.getFacet(Facet.FACET_MAX_NAME);
  204.          var20 = var12 == null ? null : new BigInteger((String)var12.getValue());
  205.          if (var20 != null && var7) {
  206.             if (var3.compareTo(var20) >= 0) {
  207.                String var27 = String.valueOf(String.valueOf("data must be less than ").concat(String.valueOf(var20))).concat(String.valueOf(""));
  208.                return var27;
  209.             }
  210.  
  211.             if (var3.compareTo(var20) > 0) {
  212.                String var26 = String.valueOf(String.valueOf("data must be less than or equal to ").concat(String.valueOf(var20))).concat(String.valueOf(""));
  213.                return var26;
  214.             }
  215.          }
  216.  
  217.          var12 = var2.getFacet(Facet.FACET_DIGITS_NAME);
  218.          var20 = var12 == null ? null : new BigInteger((String)var12.getValue());
  219.          if (var20 != null) {
  220.             String var8 = var3.toString();
  221.             int var9 = var8.length();
  222.             if (var8.startsWith("-")) {
  223.                --var9;
  224.             }
  225.  
  226.             if (var9 > var20.intValue()) {
  227.                String var10 = String.valueOf(String.valueOf("data must have at most ").concat(String.valueOf(var20))).concat(String.valueOf(" digits"));
  228.                return var10;
  229.             }
  230.          }
  231.  
  232.          var12 = var2.getFacet(Facet.FACET_ENUM_NAME);
  233.          Vector var25 = var12 == null ? null : (Vector)var12.getValue();
  234.          if (var25 != null && var25.indexOf(var3.toString()) == -1) {
  235.             String var28 = "data does not match enumeration facet";
  236.             return var28;
  237.          }
  238.       } catch (Exception var11) {
  239.          if (var4 != null) {
  240.             String var19 = String.valueOf(String.valueOf(String.valueOf("invalid facet ").concat(String.valueOf(((Facet)var4).getName()))).concat(String.valueOf(" = "))).concat(String.valueOf(((Facet)var4).getValue()));
  241.             return var19;
  242.          }
  243.  
  244.          String var6 = "invalid facet";
  245.          return var6;
  246.       }
  247.  
  248.       DataType var18 = LeafValidator.getParentDataType(var1, var2);
  249.       return var18 != null ? this.applyIntegralFacets(var1, var18, var3) : null;
  250.    }
  251.  
  252.    protected String applyDecimalFacets(SchemaIntf var1, DataType var2, BigDecimal var3) {
  253.       Object var4 = null;
  254.  
  255.       try {
  256.          Facet var12 = var2.getFacet(Facet.FACET_MINEX_NAME);
  257.          boolean var5 = var12 != null && ((String)var12.getValue()).equals("true");
  258.          var12 = var2.getFacet(Facet.FACET_MIN_NAME);
  259.          BigDecimal var21 = var12 == null ? null : new BigDecimal((String)var12.getValue());
  260.          if (var21 != null && var5) {
  261.             if (var3.compareTo(var21) <= 0) {
  262.                String var26 = String.valueOf(String.valueOf("data must be greater than ").concat(String.valueOf(var21))).concat(String.valueOf(""));
  263.                return var26;
  264.             }
  265.  
  266.             if (var3.compareTo(var21) < 0) {
  267.                String var25 = String.valueOf(String.valueOf("data must be greater than or equal to ").concat(String.valueOf(var21))).concat(String.valueOf(""));
  268.                return var25;
  269.             }
  270.          }
  271.  
  272.          var12 = var2.getFacet(Facet.FACET_MAXEX_NAME);
  273.          boolean var7 = var12 != null && ((String)var12.getValue()).equals("true");
  274.          var12 = var2.getFacet(Facet.FACET_MAX_NAME);
  275.          var21 = var12 == null ? null : new BigDecimal((String)var12.getValue());
  276.          if (var21 != null && var7) {
  277.             if (var3.compareTo(var21) >= 0) {
  278.                String var30 = String.valueOf(String.valueOf("data must be less than ").concat(String.valueOf(var21))).concat(String.valueOf(""));
  279.                return var30;
  280.             }
  281.  
  282.             if (var3.compareTo(var21) > 0) {
  283.                String var29 = String.valueOf(String.valueOf("data must be less than or equal to ").concat(String.valueOf(var21))).concat(String.valueOf(""));
  284.                return var29;
  285.             }
  286.          }
  287.  
  288.          var12 = var2.getFacet(Facet.FACET_DECIMALS_NAME);
  289.          var21 = var12 == null ? null : new BigDecimal((String)var12.getValue());
  290.          if (var21 != null) {
  291.             int var8 = var3.scale();
  292.             if (var8 > var21.intValue()) {
  293.                String var32 = String.valueOf(String.valueOf("data must have at most ").concat(String.valueOf(var21))).concat(String.valueOf(" decimal digits"));
  294.                return var32;
  295.             }
  296.          }
  297.  
  298.          var12 = var2.getFacet(Facet.FACET_DIGITS_NAME);
  299.          var21 = var12 == null ? null : new BigDecimal((String)var12.getValue());
  300.          if (var21 != null) {
  301.             String var27 = var3.toString();
  302.             int var9 = var27.length();
  303.             if (var27.startsWith("-")) {
  304.                --var9;
  305.             }
  306.  
  307.             if (var27.indexOf(".") != -1) {
  308.                --var9;
  309.             }
  310.  
  311.             if (var9 > var21.intValue()) {
  312.                String var10 = String.valueOf(String.valueOf("data must have at most ").concat(String.valueOf(var21))).concat(String.valueOf(" total digits"));
  313.                return var10;
  314.             }
  315.          }
  316.  
  317.          var12 = var2.getFacet(Facet.FACET_ENUM_NAME);
  318.          Vector var28 = var12 == null ? null : (Vector)var12.getValue();
  319.          if (var28 != null && var28.indexOf(var3.toString()) == -1) {
  320.             String var31 = "data does not match enumeration facet";
  321.             return var31;
  322.          }
  323.       } catch (Exception var11) {
  324.          if (var4 != null) {
  325.             String var20 = String.valueOf(String.valueOf(String.valueOf("invalid facet ").concat(String.valueOf(((Facet)var4).getName()))).concat(String.valueOf(" = "))).concat(String.valueOf(((Facet)var4).getValue()));
  326.             return var20;
  327.          }
  328.  
  329.          String var6 = "invalid facet";
  330.          return var6;
  331.       }
  332.  
  333.       DataType var19 = LeafValidator.getParentDataType(var1, var2);
  334.       return var19 != null ? this.applyDecimalFacets(var1, var19, var3) : null;
  335.    }
  336.  
  337.    protected String applyDoubleFacets(SchemaIntf var1, DataType var2, double var3) {
  338.       Object var5 = null;
  339.  
  340.       try {
  341.          Facet var12 = var2.getFacet(Facet.FACET_MINEX_NAME);
  342.          boolean var6 = var12 != null && ((String)var12.getValue()).equals("true");
  343.          var12 = var2.getFacet(Facet.FACET_MIN_NAME);
  344.          if (var12 != null) {
  345.             double var19 = Double.valueOf((String)var12.getValue());
  346.             if (var6) {
  347.                if (var3 <= var19) {
  348.                   String var23 = String.valueOf(String.valueOf("data must be greater than ").concat(String.valueOf(var19))).concat(String.valueOf(""));
  349.                   return var23;
  350.                }
  351.  
  352.                if (var3 < var19) {
  353.                   String var22 = String.valueOf(String.valueOf("data must be greater than or equal to ").concat(String.valueOf(var19))).concat(String.valueOf(""));
  354.                   return var22;
  355.                }
  356.             }
  357.          }
  358.  
  359.          var12 = var2.getFacet(Facet.FACET_MAXEX_NAME);
  360.          boolean var20 = var12 != null && ((String)var12.getValue()).equals("true");
  361.          var12 = var2.getFacet(Facet.FACET_MAX_NAME);
  362.          if (var12 != null) {
  363.             double var8 = Double.valueOf((String)var12.getValue());
  364.             if (var20) {
  365.                if (var3 >= var8) {
  366.                   String var24 = String.valueOf(String.valueOf("data must be less than ").concat(String.valueOf(var8))).concat(String.valueOf(""));
  367.                   return var24;
  368.                }
  369.  
  370.                if (var3 > var8) {
  371.                   String var10 = String.valueOf(String.valueOf("data must be less than or equal to ").concat(String.valueOf(var8))).concat(String.valueOf(""));
  372.                   return var10;
  373.                }
  374.             }
  375.          }
  376.  
  377.          var12 = var2.getFacet(Facet.FACET_ENUM_NAME);
  378.          Vector var21 = var12 == null ? null : (Vector)var12.getValue();
  379.          if (var21 != null && var21.indexOf(String.valueOf(var3)) == -1) {
  380.             String var9 = "data does not match enumeration facet";
  381.             return var9;
  382.          }
  383.       } catch (Exception var11) {
  384.          if (var5 != null) {
  385.             String var18 = String.valueOf(String.valueOf(String.valueOf("invalid facet ").concat(String.valueOf(((Facet)var5).getName()))).concat(String.valueOf(" = "))).concat(String.valueOf(((Facet)var5).getValue()));
  386.             return var18;
  387.          }
  388.  
  389.          String var7 = "invalid facet";
  390.          return var7;
  391.       }
  392.  
  393.       DataType var17 = LeafValidator.getParentDataType(var1, var2);
  394.       return var17 != null ? this.applyDoubleFacets(var1, var17, var3) : null;
  395.    }
  396.  
  397.    protected boolean validXMLName(String var1) {
  398.       if (xmlNamePattern == null) {
  399.          xmlNamePattern = new Pattern("\\i\\c*");
  400.       }
  401.  
  402.       return xmlNamePattern.matches(var1);
  403.    }
  404.  
  405.    protected boolean validXMLNcName(String var1) {
  406.       return this.validXMLName(var1) && var1.indexOf(":") == -1;
  407.    }
  408.  
  409.    protected boolean validXMLNmToken(String var1) {
  410.       if (xmlNmTokenPattern == null) {
  411.          xmlNmTokenPattern = new Pattern("\\c+");
  412.       }
  413.  
  414.       return xmlNmTokenPattern.matches(var1);
  415.    }
  416.  
  417.    abstract String validate(SchemaIntf var1, DataType var2, String var3);
  418. }
  419.